package com.enation.app.javashop.core.trade.order.model.vo;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

/**
 * 收银台参数VO
 * @author Snow create in 2018/7/11
 * @version v2.0
 * @since v7.0.0
 */
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class CashierVO {


    @ApiModelProperty(name="ship_name",value="收货人姓名")
    private String shipName;

    @ApiModelProperty(name="ship_addr",value="收货地址")
    private String shipAddr;

    @ApiModelProperty(name="ship_mobile",value="收货人手机")
    private String shipMobile;

    @ApiModelProperty(name="ship_tel",value="收货人电话")
    private String shipTel;

    @ApiModelProperty(name="ship_province",value="配送地区-省份")
    private String shipProvince;

    @ApiModelProperty(name="ship_city",value="配送地区-城市")
    private String shipCity;

    @ApiModelProperty(name="ship_county",value="配送地区-区(县)")
    private String shipCounty;

    @ApiModelProperty(name="ship_town",value="配送街道")
    private String shipTown;

    @ApiModelProperty(name="need_pay_price",value="应付金额")
    private Double needPayPrice;

    @ApiModelProperty(name="pay_type_text",value="支付方式")
    private String payTypeText;

    @ApiModelProperty(name="pay_time_left",value="支付剩余时间")
    private Long payTimeLeft;

    @ApiModelProperty(name="trade_sn",value="交易编号")
    private String tradeSn;

    @ApiModelProperty(name="order_create_time",value="订单下单时间")
    private Long orderCreateTime;

    @ApiModelProperty(name="wallet_pay_price",value="钱包支付金额")
    private Double walletPayPrice;

    // --------------   增加字段  ----------------

    @ApiModelProperty(name="goods_image",value="商品图片")
    private String goodsImage;

    @ApiModelProperty(name="good_num",value="商品数量")
    private Integer goodNum;

    @ApiModelProperty(name="order_sn",value="订单号")
    private String orderSn;

    @ApiModelProperty(name="order_type",value="订单类型")
    private String orderType;



    public String getShipName() {
        return shipName;
    }

    public void setShipName(String shipName) {
        this.shipName = shipName;
    }

    public String getShipAddr() {
        return shipAddr;
    }

    public void setShipAddr(String shipAddr) {
        this.shipAddr = shipAddr;
    }

    public String getShipMobile() {
        return shipMobile;
    }

    public void setShipMobile(String shipMobile) {
        this.shipMobile = shipMobile;
    }

    public String getShipTel() {
        return shipTel;
    }

    public void setShipTel(String shipTel) {
        this.shipTel = shipTel;
    }

    public String getShipProvince() {
        return shipProvince;
    }

    public void setShipProvince(String shipProvince) {
        this.shipProvince = shipProvince;
    }

    public String getShipCity() {
        return shipCity;
    }

    public void setShipCity(String shipCity) {
        this.shipCity = shipCity;
    }

    public String getShipCounty() {
        return shipCounty;
    }

    public void setShipCounty(String shipCounty) {
        this.shipCounty = shipCounty;
    }

    public String getShipTown() {
        return shipTown;
    }

    public void setShipTown(String shipTown) {
        this.shipTown = shipTown;
    }

    public Double getNeedPayPrice() {
        return needPayPrice;
    }

    public void setNeedPayPrice(Double needPayPrice) {
        this.needPayPrice = needPayPrice;
    }

    public String getPayTypeText() {
        return payTypeText;
    }

    public void setPayTypeText(String payTypeText) {
        this.payTypeText = payTypeText;
    }

    public Long getPayTimeLeft() {
        return payTimeLeft;
    }

    public void setPayTimeLeft(Long payTimeLeft) {
        this.payTimeLeft = payTimeLeft;
    }

    public String getTradeSn() {
        return tradeSn;
    }

    public void setTradeSn(String tradeSn) {
        this.tradeSn = tradeSn;
    }

    public Long getOrderCreateTime() {
        return orderCreateTime;
    }

    public void setOrderCreateTime(Long orderCreateTime) {
        this.orderCreateTime = orderCreateTime;
    }

    public Double getWalletPayPrice() {
        return walletPayPrice;
    }

    public void setWalletPayPrice(Double walletPayPrice) {
        this.walletPayPrice = walletPayPrice;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o){
            return true;
        }

        if (o == null || getClass() != o.getClass()){
            return false;
        }

        CashierVO cashierVO = (CashierVO) o;

        return new EqualsBuilder()
                .append(shipName, cashierVO.shipName)
                .append(shipAddr, cashierVO.shipAddr)
                .append(shipMobile, cashierVO.shipMobile)
                .append(shipTel, cashierVO.shipTel)
                .append(shipProvince, cashierVO.shipProvince)
                .append(shipCity, cashierVO.shipCity)
                .append(shipCounty, cashierVO.shipCounty)
                .append(shipTown, cashierVO.shipTown)
                .append(needPayPrice, cashierVO.needPayPrice)
                .append(payTypeText, cashierVO.payTypeText)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(shipName)
                .append(shipAddr)
                .append(shipMobile)
                .append(shipTel)
                .append(shipProvince)
                .append(shipCity)
                .append(shipCounty)
                .append(shipTown)
                .append(needPayPrice)
                .append(payTypeText)
                .toHashCode();
    }

    @Override
    public String toString() {
        return "CashierVO{" +
                "shipName='" + shipName + '\'' +
                ", shipAddr='" + shipAddr + '\'' +
                ", shipMobile='" + shipMobile + '\'' +
                ", shipTel='" + shipTel + '\'' +
                ", shipProvince='" + shipProvince + '\'' +
                ", shipCity='" + shipCity + '\'' +
                ", shipCounty='" + shipCounty + '\'' +
                ", shipTown='" + shipTown + '\'' +
                ", needPayPrice=" + needPayPrice +
                ", payTypeText='" + payTypeText + '\'' +
                '}';
    }

    public String getGoodsImage() {
        return goodsImage;
    }

    public void setGoodsImage(String goodsImage) {
        this.goodsImage = goodsImage;
    }

    public Integer getGoodNum() {
        return goodNum;
    }

    public void setGoodNum(Integer goodNum) {
        this.goodNum = goodNum;
    }

    public String getOrderSn() {
        return orderSn;
    }

    public void setOrderSn(String orderSn) {
        this.orderSn = orderSn;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }
}
